iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
Software Development

ASP.NET MVC基礎修練:從菜開始系列 第 26

Day-26 ASP.NET MVC 之 GridView 資料更新

  • 分享至 

  • xImage
  •  

GridView 點下編輯按鈕後 到編輯頁面 進行資料更新

在 Controller 建立兩個方法
第一個方法程式碼如下

   public ActionResult Edit(string  id)  //主要用於帶出資料
        {
            string sql = $"select  *  from Employee where id ={id}";
            DBHelper db = new DBHelper();
          
            SqlDataReader sqlDataReader = db.GetSqlDataReader(sql);
          
            List<Employee> employee = new List<Employee>();

            while (sqlDataReader.Read())
            {
                 employee.Add (new Employee
                {
                    id = sqlDataReader.GetInt32(0), 
                    LoginID = sqlDataReader.GetString(1),
                    Username = sqlDataReader.GetString(2),
                    Gender = sqlDataReader.GetString(3),
                    PhoneNumber = sqlDataReader.GetString(4)
                });
            }
            sqlDataReader.Close(); 
         
            return View(employee.FirstOrDefault());
        }

程式碼簡單說明
ActionResult Edit(string id):這是一個 Action 方法,它接受一個名為 id 的參數,
該參數用於指定要編輯的 Employee 記錄的唯一識別符。
在路由中,通常會將此參數作為路由的一部分,例如 /Employee/Edit/1,其中 1 是要編輯的 Employee 的 id。

string sql = $"select * from Employee where id ={id}";:這行代碼構建了一個 SQL 查詢字串,
用於選擇具有特定 id 的 Employee 記錄。
$ 字串插值允許您在字串中嵌入變數值,這裡的 id 變數是由方法的參數傳入的。

List employee = new List();:在這裡創建了一個空的 Employee 列表,用於存儲查詢結果。

employee.Add(new Employee { /* ... */ });:在循環內部,為每一行創建一個新的 Employee 對象,然後將該對象添加到 employee 列表中。

return View(employee.FirstOrDefault());:最後,這個方法將 Employee 列表中的第一個元素(即具有指定 id 的 Employee 記錄)傳遞給Views,並返回頁面

第二個方法程式碼如下

   [HttpPost]
        public ActionResult Save(Employee Employee)
        {
            int count = 0;

            if (ModelState.IsValid)
            {
           
                string sql = $"update Employee Set [username] = '{Employee.Username }', [phone_number] = '{Employee.PhoneNumber }',[gender]='{Employee.Gender}' where id = {Employee.id}";

                DBHelper db = new DBHelper();
                count = db.ExecuteNonQuery(sql);
            }
            if (count > 0)
            {
                return RedirectToAction("Index");
            }
            return View(Employee);
        }

程式碼說明如下
[HttpPost] 屬性:這個屬性指示這是一個 HTTP POST 請求的 Action 方法,處理由表單提交的數據。

ActionResult Save(Employee Employee):這是 Action 方法的簽名,它接受一個名為 Employee 的參數,該參數封裝了從編輯表單提交的 Employee 記錄的數據。

return RedirectToAction("Index");:如果更新成功,則重定向到名為 "Index" 的 Action 方法。以顯示更新後的結果。
Edit.cshtml 程式如下

@using (Html.BeginForm("Save", "Employee", FormMethod.Post))
{
    <div class="form-group">
        @Html.Hidden("Id", Model.id) 
    </div>
    <div class="form-group">
        @Html.LabelFor(model => model.LoginID, "帳號")
        @Html.DisplayFor(model => model.LoginID)
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Username, "使用者名稱")
        @Html.TextBoxFor(model => model.Username, new { @class = "form-control" }) 
    </div>

    <div class="form-group">
        @Html.Label("性別")
        @Html.RadioButtonFor(model => model.Gender, "M") <span>男</span>
        @Html.RadioButtonFor(model => model.Gender, "F") <span>女</span>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.PhoneNumber, "電話號碼")
        @Html.TextBoxFor(model => model.PhoneNumber, new { @class = "form-control" }) 
    </div>

    <div class="form-group">
        <input type="submit" value="儲存" class="btn btn-primary" />
    </div>
}

執行畫面如下
https://ithelp.ithome.com.tw/upload/images/20231011/201066409mu7vCwovN.jpg
點擊編輯後
https://ithelp.ithome.com.tw/upload/images/20231011/20106640Yt5ZhGkHvu.jpg
輸入完資料按下儲存 返回清單頁


上一篇
Day-25 ASP.NET MVC 之 GridView
下一篇
Day-27 ASP.NET MVC 之 GridView 新增資料
系列文
ASP.NET MVC基礎修練:從菜開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
zihrueiliou
iT邦新手 5 級 ‧ 2024-03-05 09:35:12

cshtml都會遇到cs1963的問題
運算式樹狀結構不可包含動態作業

我要留言

立即登入留言